package com.molichuxing.services.infrastructure.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.molichuxing.framework.dao.RootMapper;
import com.molichuxing.services.infrastructure.bean.InsuranceBean;

/**
 * <p>
 * 保险表 Mapper 接口
 * </p>
 *
 * @author xuelin yi
 * @since 2019-08-20
 */
public interface InsuranceMapper extends RootMapper<InsuranceBean> {


    /**
     * 根据条件查询保险数据
     * @param param
     * @return
     */
    int getInsuranceCount(@Param("param") Map<String, Object> param);

    /**
     * 根据条件查询保险数据
     * @param param
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<InsuranceBean> getInsurancePageList(@Param("param") Map<String, Object> param, @Param("pageNum") Integer pageNum, @Param("pageSize") Integer pageSize);

    /**
     * 根据条件查询保险数据
     * @param type
     * @return
     */
    List<InsuranceBean> getInsuranceList(@Param("type") Integer type);


    /**
     * 根据条件查询保险数据
     * @param id
     * @return
     */
    @Override
    InsuranceBean getById(@Param("id") Integer id);

    /**
     * 根据车辆id查询保险数据
     * @param carId
     * @return
     */
    List<InsuranceBean> getInsuranceByCarId(@Param("carId") Integer carId, @Param("type") Integer type);

    /**
     * 修改保险信息
     * @param bean
     * @return
     */
    int modifyInsurance(InsuranceBean bean);


    /**
     * 新增保险信息
     * @param bean
     * @return
     */
    int createInsurance(InsuranceBean bean);

    /**
     * 根据状态和类型查询总数
     * @param type
     * @param status
     * @return
     */
    int getInsuranceTabCount(@Param("type") int type, @Param("status") int status);

    InsuranceBean getInsuranceByCode(@Param("code") String code);

    InsuranceBean getLastInsuranceByCarIdAndType(@Param("carId")Integer carId, @Param("type")Integer type);

    /**
	 * 保险导出
	 * 
	 * @param mapParam
	 * @return
	 */
    List<InsuranceBean> getDownloadInsuranceList(@Param("param") Map<String, Object> mapParam);

	/**
	 * 保险导出count
	 * 
	 * @param mapParam
	 * @return
	 */
	Long getDownloadInsuranceCount(@Param("param") Map<String, Object> mapParam);

	/**
	 * 查询保险公司ids
	 * 
	 * @param selectParams
	 * @return
	 */
	List<Integer> getInsuranceCompanyIds(@Param("param") Map<String, Object> selectParams);

    /**
     * 查询pdf不为空的保险数据
     * @return
     */
    List<InsuranceBean> getInsuranceListImgIsNotNull();

}
